package factory;

import jugador.Elite;
import jugador.Generico;
import jugador.Jugador;
import jugador.Personalizado;

public class JugadorFactory implements JugadorFactoryMethod {

    @Override
    public Jugador crearJugador(int habilidadPortero, int capacidadReaccion, int fuerzaExplosiva, int velocidadRegate, int velocidadPunta, int equilibrio, int resistencia, int potenciaTiro, int salto, int resistenciaLesiones, int actitudDefensiva, int actitudOfensiva, int regularidad, int fortalezaMental, int juegoEquipo, boolean cazagoles, boolean senuelo, boolean diezClasico, boolean destructor, boolean referente, boolean instigador, boolean jugadorSolido) {
        if((cazagoles == true) || (senuelo == true) || (diezClasico == true) || (destructor == true) || (referente == true) || (instigador == true) || (jugadorSolido == true)) {
            if ((habilidadPortero > 95) || (capacidadReaccion > 95)  || (fuerzaExplosiva > 95)  || (velocidadRegate > 95)  || (velocidadPunta > 95) || (equilibrio > 95) || (resistencia > 95) || (potenciaTiro > 95) || (salto > 95) || (resistenciaLesiones > 95) || (actitudDefensiva > 95) || (actitudOfensiva > 95) || (regularidad > 95) || (fortalezaMental > 95) || (juegoEquipo > 95)) {  
                    return new Elite(habilidadPortero, capacidadReaccion, fuerzaExplosiva, velocidadRegate, velocidadPunta, equilibrio, resistencia, potenciaTiro, salto, resistenciaLesiones, actitudDefensiva, actitudOfensiva, regularidad, fortalezaMental, juegoEquipo, cazagoles, senuelo, diezClasico, destructor, referente, instigador, jugadorSolido);
            } else {
                if ((habilidadPortero <= 90) || (capacidadReaccion <= 90)  || (fuerzaExplosiva <= 90)  || (velocidadRegate <= 90)  || (velocidadPunta <= 90) || (equilibrio <= 90) || (resistencia <= 90) || (potenciaTiro <= 90) || (salto <= 90) || (resistenciaLesiones <= 90) || (actitudDefensiva <= 90) || (actitudOfensiva <= 90) || (regularidad <= 90) || (fortalezaMental <= 90) || (juegoEquipo <= 90)) {  
                    return new Personalizado(habilidadPortero, capacidadReaccion, fuerzaExplosiva, velocidadRegate, velocidadPunta, equilibrio, resistencia, potenciaTiro, salto, resistenciaLesiones, actitudDefensiva, actitudOfensiva, regularidad, fortalezaMental, juegoEquipo, cazagoles, senuelo, diezClasico, destructor, referente, instigador, jugadorSolido);
                }
            }
            
        } else {
            if ((habilidadPortero <= 95) && (capacidadReaccion <= 95)  && (fuerzaExplosiva <= 95)  && (velocidadRegate <= 95)  && (velocidadPunta <= 95) && (equilibrio <= 95) && (resistencia <= 95) && (potenciaTiro <= 95) && (salto <= 95) && (resistenciaLesiones <= 95) && (actitudDefensiva <= 95) && (actitudOfensiva <= 95) && (regularidad <= 95) && (fortalezaMental <= 95) && (juegoEquipo <= 95)) {  
                return new Generico(habilidadPortero, capacidadReaccion, fuerzaExplosiva, velocidadRegate, velocidadPunta, equilibrio, resistencia, potenciaTiro, salto, resistenciaLesiones, actitudDefensiva, actitudOfensiva, regularidad, fortalezaMental, juegoEquipo, cazagoles, senuelo, diezClasico, destructor, referente, instigador, jugadorSolido);                
            } else {
                if ((habilidadPortero <= 90) || (capacidadReaccion <= 90)  || (fuerzaExplosiva <= 90)  || (velocidadRegate <= 90)  || (velocidadPunta <= 90) || (equilibrio <= 90) || (resistencia <= 90) || (potenciaTiro <= 90) || (salto <= 90) || (resistenciaLesiones <= 90) || (actitudDefensiva <= 90) || (actitudOfensiva <= 90) || (regularidad <= 90) || (fortalezaMental <= 90) || (juegoEquipo <= 90)) {  
                    return new Personalizado(habilidadPortero, capacidadReaccion, fuerzaExplosiva, velocidadRegate, velocidadPunta, equilibrio, resistencia, potenciaTiro, salto, resistenciaLesiones, actitudDefensiva, actitudOfensiva, regularidad, fortalezaMental, juegoEquipo, cazagoles, senuelo, diezClasico, destructor, referente, instigador, jugadorSolido);
                }
            }
        }
        return null;
    }    
}
